If we raise the abstraction level a little more, we should be able to create a better system with more versatility